package lab

// Reverse 反转数组，不改变原始数组返回新数组
// 如果希望直接操作原数组，请使用 slices.Reverse
func Reverse[T any](array []T) []T {
	result := make([]T, len(array))
	copy(result, array)
	for i, j := 0, len(result)-1; i < j; i, j = i+1, j-1 {
		result[i], result[j] = result[j], result[i] // 交换元素
	}
	return result
}
